/**
 * 
 */
package com.woniuxy.amusementparkos.permission.Service.impl;

import java.util.ArrayList;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.woniuxy.amusementparkos.dao.fzw.MenuDao;
import com.woniuxy.amusementparkos.dao.fzw.PowerDao;
import com.woniuxy.amusementparkos.entity.fzw.Power;
import com.woniuxy.amusementparkos.exception.fzw.MenuInUseException;
import com.woniuxy.amusementparkos.permission.Service.PowerService;
import com.woniuxy.amusementparkos.permission.controller.PowerInUseException;

/**
 *
 * @author fzw
 *
 * 2020年5月7日下午4:07:26
 */
@Service
public class PowerServiceImp implements PowerService {
	@Autowired
	PowerDao powerDao;

	@Override
	public List<Power> selectAllPowerByPageNumber(Integer page, Integer limit) {
		return powerDao.selectAllPowerByPageNumber((page-1)*10,limit);
	}
	@Override
	public Long selectCount() {
		return powerDao.selectCount();
	}

	@Override
	public void insertPower(Power power) {
		powerDao.insertPower(power);
	}

	@Override
	public void updatePower(Power power) {
		powerDao.updatePower(power);
	}

	@Override
	public void selectPowerByPowerIds(int[] power_ids) {
		//默认为-1，若查到用户，则根据-1判断
		int role_id=-1;
		//创建一个集合用来存放角色正在使用的权限id
		List<Integer> usingPower = new ArrayList<Integer>();
		for(Integer power_id:power_ids) {
		role_id=-1;//重新赋值
		role_id=powerDao.selectRoleByPower_id(power_id);
		//如果查询到用户不为空，则说明该角色正在被使用，则存放在数组里
		if(role_id!=-1) {
			usingPower.add(power_id);
		}
	}
		//最后判断数组里是否存放有已被角色使用的权限，有则抛异常，无法删除
		if(!usingPower.isEmpty()) {
			//将正在使用的权限名查询出来
			String[] powerNames=powerDao.selectPowersByIds(usingPower);
			String names="";
			for(String name:powerNames) {
				names+=name+"、";
			}
			names=names.substring(0,names.length()-1);
			throw new PowerInUseException("权限：  "+names+"      正在使用中，无法删除！");
		}

	}

	@Override
	public void deletePowers(int[] power_ids) {
		powerDao.deletePowers(power_ids);
	}

	@Override
	public List<Power> selectAllPower() {
		return powerDao.selectAllPower();
	}

}
